'use strict'

const CompressionPlugin = require("compression-webpack-plugin"); // 引入

function resolve (dir) {
  return path.join(__dirname, dir)
}

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
// You can change the port by the following methods:
// port = 9528 npm run dev OR npm run dev --port = 9528
const port = process.env.port || process.env.npm_config_port || 9528 // dev port

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  /**
   * You will need to set publicPath if you plan to deploy your site under a sub path,
   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
   * then publicPath should be set to "/bar/".
   * In most cases please use '/' !!!
   * Detail: https://cli.vuejs.org/config/#publicpath
   */
  publicPath: './',
  outputDir: 'dist',
  assetsDir: 'static',
  productionSourceMap: false,
  configureWebpack: config => {
    // 开发环境不配置
    if (process.env.NODE_ENV !== 'production') return
    // 生产环境才去配置
    return {
      plugins: [
        new CompressionPlugin({
          cache: false, // 取消缓存 
          // filename: "[path][base].gz", // 输出文件名 这种方式是默认的，多个文件压缩就有多个.gz文件，建议使用下方的写法
          filename: '[path].gz[query]', //  使得多个.gz文件合并成一个文件，这种方式压缩后的文件少，建议使用
          algorithm: 'gzip', // 压缩算法 默认是gzip
          test: /\.(js|css)(\?.*)?$/g, // 使用正则给匹配到的文件做压缩，这里是给css、js做压缩
          threshold: 10240, // 只处理大于 10KB 的文件
          minRatio: 0.8, // 只有压缩率大于0.8的文件才会被处理
          //是否删除原有静态资源文件，即只保留压缩后的.gz文件，建议这个置为false，还保留源文件。以防：
          // 假如出现访问.gz文件访问不到的时候，还可以访问源文件双重保障
          deleteOriginalAssets: false
        })
      ]
    }
  }
}
